home *** CD-ROM | disk | FTP | other *** search
/ By Popular Request 2.0 / By Popular Request 2.0 (Arsenal Computer).ISO / amiga_5 / pdbank14.lha / PDBANK.LST < prev   
File List  |  1994-11-25  |  40KB  |  2,000 lines

  1. '
  2. MODE 1
  3. DIM hold$(20)
  4. DIM ansi$(10)
  5. ' rem the next line when compiling the final door !!!
  6. ' test%=1
  7. '
  8. cr$=CHR$(13)+CHR$(10)
  9. de$=CHR$(8)+" "+CHR$(8)
  10. esc$=CHR$(27)
  11. screenclr$=cr$+cr$+CHR$(12)
  12. '
  13. IF (test%=1) AND (NOT EXIST("Ram:Userdata"))
  14.   ' setup dummy names, etc
  15.   rtime$="300"
  16.   uname$="PETER DEANE"
  17.   id$="1"
  18.   lev$="1"
  19.   bd$="2400"
  20.   ring$="0"
  21.   ansi%=1
  22.   path$="BBS:Doorfiles1/Door211/"
  23. ELSE
  24.   IF EXIST("ram:doordata")
  25.     OPEN "I",#2,"RAM:USERDATA"
  26.     LINE INPUT #2,rtime$
  27.     LINE INPUT #2,uname$
  28.     LINE INPUT #2,id$
  29.     LINE INPUT #2,lev$
  30.     LINE INPUT #2,bd$
  31.     LINE INPUT #2,ring$
  32.     LINE INPUT #2,path$
  33.     CLOSE #2
  34.   ELSE
  35.     '
  36.     ' THIS door WON'T work without doordata!!
  37.     END
  38.     '
  39.   ENDIF
  40. ENDIF
  41. '
  42. ' Investigate our working environment from the config file...
  43. '
  44. IF EXIST("S:Metro.cfg")
  45.   config$="S:Metro.cfg"
  46. ELSE IF EXIST("BBS:Metro.cfg")
  47.   config$="BBS:Metro.cfg"
  48. ELSE IF EXIST("Metro.cfg")
  49.   config$="Metro.cfg"
  50. ELSE
  51.   config$="XXX"
  52. ENDIF
  53. '
  54. ' Defaults
  55. '
  56. bbsname$="The OzMetro BBS"
  57. sfd$="BBS:"
  58. sysopname$="The Sysop"
  59. winw$="640"
  60. winh$="200"
  61. '
  62. IF config$<>"XXX"
  63.   '
  64.   OPEN "I",#2,config$,128
  65.   DO WHILE (NOT EOF(#2))
  66.     LINE INPUT #2,xx$
  67.     xx$=TRIM$(xx$)
  68.     xxu$=UPPER$(xx$)
  69.     '
  70.     IF xxu$="" OR LEFT$(xxu$,1)=";"
  71.       ' Do nothing
  72.     ELSE IF LEFT$(xxu$,7)="BBSNAME"
  73.       xx$=MID$(xx$,8,255)
  74.       xx$=TRIM$(xx$)
  75.       bbsname$=xx$
  76.     ELSE IF LEFT$(xxu$,9)="SYSOPNAME"
  77.       xx$=MID$(xx$,10,255)
  78.       xx$=TRIM$(xx$)
  79.       sysopname$=xx$
  80.     ELSE IF LEFT$(xxu$,11)="WINDOWWIDTH"
  81.       xx$=MID$(xx$,12,255)
  82.       xx$=TRIM$(xx$)
  83.       winw$=xx$
  84.     ELSE IF LEFT$(xxu$,12)="WINDOWHEIGHT"
  85.       xx$=MID$(xx$,13,255)
  86.       xx$=TRIM$(xx$)
  87.       winh$=xx$
  88.     ENDIF
  89.     '
  90.   LOOP UNTIL EOF(#2)
  91.   CLOSE #2
  92. ENDIF
  93. '
  94. ' integer conversion for system variables
  95. '
  96. tpc%=VAL(rtime$)
  97. id%=VAL(id$)
  98. lev%=VAL(lev$)
  99. ring%=VAL(ring$)
  100. bd%=VAL(bd$)
  101. timeon%=CINT(TIMER/200)
  102. '
  103. sw%=VAL(winw$)
  104. sh%=VAL(winh$)
  105. sx%=0
  106. sy%=0
  107. ww%=sw%
  108. wh%=sh%-12
  109. wx%=0
  110. wy%=11
  111. '
  112. '
  113. OPENS 1,sx%,sy%,sw%,sh%,3,32768
  114. IF ring%=1
  115.   BACKS 1
  116.   OPENW #1,wx%,wy%,ww%,wh%,0,2304,1
  117. ELSE
  118.   OPENW #1,wx%,wy%,ww%,wh%,0,2304,1
  119.   ~ActivateWindow(WINDOW(1))
  120. ENDIF
  121. '
  122. ' Hack these settings if you like: format &Hxxx
  123. ' the xxx is the HEX value of the RGB register
  124. '
  125. SETCOLOR 0,&H141
  126. SETCOLOR 1,&HD62
  127. SETCOLOR 2,&H2D2
  128. SETCOLOR 3,&HCB2
  129. SETCOLOR 4,&H56C
  130. SETCOLOR 5,&HB6B
  131. SETCOLOR 6,&H5DC
  132. SETCOLOR 7,&HFEF
  133. '
  134. title$="Time Bank  ID: "+id$+" ("+uname$+") Lev: "+lev$+" Baud: "
  135. IF ring%=0
  136.   title$=title$+"Local Login"
  137. ELSE
  138.   title$=title$+bd$
  139. ENDIF
  140. TITLEW #1,"",title$
  141. TITLES #1,title$
  142. '
  143. ' modem need not be opened if it's a local login!
  144. ' then you can test em standalone with the BBS running, among other things...
  145. '
  146. IF ring%<>0
  147.   GOSUB modem.o
  148. ENDIF
  149. '
  150. ' Figure out the page pause setting!
  151. '
  152. flnm$=sfd$+"BBSFILES/userlog"
  153. IF EXIST(flnm$)
  154.   OPEN "R",#2,flnm$,125
  155.   FIELD #2,25 AS un$,10 AS pa$,1 AS le$,25 AS fr$,12 AS ph$,10 AS dl$,6 AS lm$,6 AS lf$,10 AS ind$,3 AS tc$,3 AS td$,1 AS sw$,1 AS pr$,1 AS mo$,5 AS cn$,4 AS dm1$,2 AS dm2$
  156.   GET #2,id%
  157.   page%=VAL(dm2$)
  158.   CLOSE #2
  159. ELSE
  160.   page%=21
  161. ENDIF
  162. IF page%>5
  163.   scrnht%=page%-1
  164. ELSE
  165.   scrnht%=22
  166. ENDIF
  167. IF ring%=0
  168.   scrnht%=(wh%/8)-4
  169. ENDIF
  170. '
  171. ' ======================================================================
  172. '
  173. ' We're in, hit em hard and good!
  174. '
  175. ' reset terminal
  176. o$=esc$+"[0;40;37m"+CHR$(12)
  177. GOSUB 2
  178. o$=cr$+cr$+"           Metro Time Bank"
  179. GOSUB 2
  180. o$=cr$+cr$+"               (c) PFD"
  181. GOSUB 2
  182. o$=cr$+cr$+"             Version 1.4"
  183. GOSUB 2
  184. o$=cr$+cr$+"              25-Nov-94"+cr$
  185. GOSUB 2
  186. GOSUB setansi
  187. '
  188. ' ======================================================================
  189. '
  190. ' Fix up the accounts files, and config
  191. '
  192. GOSUB dateconv
  193. IF NOT EXIST(path$+"Accounts")
  194.   ' this is for the very first time -  start afresh
  195.   ' a bit of code here, but saves the sysops work.
  196.   ' make up a dummy random file with the sysopname
  197.   '
  198.   OPEN "R",#2,path$+"Accounts",59
  199.   FIELD #2,25 AS acname$,6 AS acbal$,10 AS acdate$,6 AS acdep$,6 AS acwith$,6 AS actran$
  200.   LSET acname$=sysopname$
  201.   LSET acbal$="0"
  202.   LSET acdate$="Never"
  203.   LSET acdep$="0"
  204.   LSET acwith$="0"
  205.   LSET actran$="0"
  206.   PUT #2,1
  207.   CLOSE #2
  208. ENDIF
  209. PAUSE 3
  210. '
  211. ' search through file to get their details
  212. '
  213. o$=cr$+cr$+"Checking your account..."
  214. GOSUB 2
  215. '
  216. ' Check to see if they are banned!
  217. banned!=FALSE
  218. '
  219. IF EXIST(path$+"PDBank.banned")
  220.   OPEN "I",#2,path$+"PDBank.banned",1024
  221.   DO
  222.     LINE INPUT #2,check$
  223.     IF uname$=UPPER$(TRIM$(check$))
  224.       banned!=TRUE
  225.     ENDIF
  226.     EXIT IF banned!=TRUE
  227.   LOOP UNTIL EOF(#2)
  228.   CLOSE #2
  229. ENDIF
  230. '
  231. IF banned!=TRUE
  232.   '
  233.   o$=cr$+cr$+"You have been BANNED from the use"+cr$
  234.   GOSUB 2
  235.   o$="of the Time Bank!!!"+cr$
  236.   GOSUB 2
  237.   o$=cr$+"Contact your sysop for more information."
  238.   GOSUB 2
  239.   GOSUB press
  240.   GOSUB 1
  241.   GOTO bye
  242. ENDIF
  243. '
  244. OPEN "R",#2,path$+"Accounts",59
  245. FIELD #2,25 AS acname$,6 AS acbal$,10 AS acdate$,6 AS acdep$,6 AS acwith$,6 AS actran$
  246. '
  247. ' how many people do we have records for?
  248. '
  249. users%=(LOF(#2)/59)
  250. '
  251. ' Hmm, that easy, eh?
  252. '
  253. k%=0
  254. foundit%=0
  255. '
  256. WHILE k%<users%
  257.   INC k%
  258.   IF (k% MOD 10)=0
  259.     o$="."
  260.     GOSUB 2
  261.   ENDIF
  262.   GET #2,k%
  263.   check$=TRIM$(acname$)
  264.   IF INSTR(check$,uname$)>0
  265.     foundit%=1
  266.     balance%=VAL(acbal$)
  267.     lastdate$=acdate$
  268.     lastdep%=VAL(acdep$)
  269.     lastwith%=VAL(acwith$)
  270.     lasttran%=VAL(actran$)
  271.     acnumber%=k%
  272.   ENDIF
  273.   '
  274.   EXIT IF foundit%=1
  275.   '
  276.   ' /\ So it's kludgy, but we stop wasting time, and avoid 2 matches!!
  277. WEND
  278. '
  279. IF foundit%<>1
  280.   o$=cr$+cr$+"You don't have an account with us at the moment!"
  281.   GOSUB 2
  282.   o$=cr$+cr$+"Would you like to open one (Y/n)? "
  283.   in%=3
  284.   il%=1
  285.   yes%=1
  286.   GOSUB 1
  287.   IF in$="NO" OR car%>0
  288.     GOTO bye
  289.   ENDIF
  290.   users%=users%+1
  291.   acnumber%=users%
  292.   o$=cr$+cr$+"No worries! Your account number is "+STR$(acnumber%)+"."
  293.   GOSUB 2
  294.   LSET acname$=uname$
  295.   LSET acbal$="0"
  296.   LSET acdate$=pd.date$
  297.   LSET acdep$="0"
  298.   LSET acwith$="0"
  299.   LSET actran$="0"
  300.   PUT #2,users%
  301.   balance%=0
  302.   lastdep%=0
  303.   lastwith%=0
  304.   lasttran%=0
  305.   lastdate$="Never"
  306.   GOSUB press
  307.   GOSUB 1
  308.   IF car%>0
  309.     GOTO bye
  310.   ENDIF
  311. ENDIF
  312. '
  313. CLOSE #2
  314. '
  315. ' Get the config
  316. '
  317. OPEN "I",#2,path$+"pdbank.config",50
  318. LINE INPUT #2,bankname$
  319. LINE INPUT #2,temp$
  320. maxdeposit%=VAL(temp$)
  321. LINE INPUT #2,temp$
  322. maxwithdrawal%=VAL(temp$)
  323. LINE INPUT #2,temp$
  324. maxtransfer%=VAL(temp$)
  325. CLOSE #2
  326. '
  327. ' initialisation
  328. '
  329. GOSUB dateconv
  330. lastdate$=TRIM$(lastdate$)
  331. IF lastdate$=pd.date$
  332.   ' that is, they have already been in the door today
  333.   ' isn't it good how time NEVER goes backward, and if the
  334.   ' last date isn't the same as today's it must have been a
  335.   ' PREVIOUS visit!!
  336.   '
  337.   deposits%=lastdep%
  338.   withdrawals%=lastwith%
  339.   transfers%=lasttran%
  340. ELSE
  341.   deposits%=0
  342.   withdrawals%=0
  343.   transfers%=0
  344. ENDIF
  345. depsnow%=0
  346. withsnow%=0
  347. ' /\ nothing to do with SNOW - deposits/withdrawals NOW!
  348. '
  349. winnings%=0
  350. '
  351. ' ======================================================================
  352. '
  353. ' Check for messages for them
  354. '
  355. cfile$=path$+uname$+".msg"
  356. IF EXIST(cfile$)
  357.   o$=cr$+cr$
  358.   GOSUB 2
  359.   '
  360.   file$=cfile$
  361.   GOSUB seq.o
  362.   GOSUB press
  363.   GOSUB 1
  364.   IF car%>0
  365.     GOTO bye
  366.   ENDIF
  367.   '
  368.   KILL cfile$
  369. ENDIF
  370. '
  371. ' ======================================================================
  372. main:
  373. ' ======================================================================
  374. GOSUB tchk
  375. IF car%>0
  376.   GOTO bye
  377. ENDIF
  378. '
  379. GOSUB printmenu
  380. GOSUB tchk
  381. IF cmd%=1
  382.   cmd%=0
  383. ELSE
  384.   o$=cr$+cr$+ansi$(2)+"("+ansi$(3)+STR$(rtime%)+" min"+ansi$(2)+")"+ansi$(5)+" Enter Transaction: "
  385.   in%=0
  386.   il%=1
  387.   GOSUB 1
  388. ENDIF
  389. GOSUB tchk
  390. IF car%>0
  391.   GOTO bye
  392. ENDIF
  393. '
  394. ' ======================================================================
  395. IF in$="Q"
  396.   GOTO bye
  397. ENDIF
  398. '
  399. ' ======================================================================
  400. IF in$="R"
  401.   ' re-configure details
  402.   o$=CHR$(12)
  403.   GOSUB 2
  404.   GOSUB setansi
  405.   IF car%>0
  406.     GOTO bye
  407.   ENDIF
  408.   GOSUB setpagepause
  409.   IF car%>0
  410.     GOTO bye
  411.   ENDIF
  412.   in$=""
  413. ENDIF
  414. '
  415. ' ======================================================================
  416. IF in$="D"
  417.   ' Deposit Time
  418.   GOSUB deposit
  419.   IF car%>0
  420.     GOTO bye
  421.   ENDIF
  422.   in$=""
  423. ENDIF
  424. '
  425. ' ======================================================================
  426. IF in$="W"
  427.   ' Withdraw time
  428.   GOSUB withdraw
  429.   IF car%>0
  430.     GOTO bye
  431.   ENDIF
  432.   in$=""
  433. ENDIF
  434. '
  435. ' ======================================================================
  436. IF in$="T"
  437.   ' Transfer time
  438.   GOSUB transfer
  439.   IF car%>0
  440.     GOTO bye
  441.   ENDIF
  442.   in$=""
  443. ENDIF
  444. '
  445. ' ======================================================================
  446. IF in$="M" AND lev%=9
  447.   GOSUB sysop
  448.   IF car%>0
  449.     GOTO bye
  450.   ENDIF
  451.   in$=""
  452. ENDIF
  453. '
  454. ' ======================================================================
  455. IF in$="H"
  456.   GOSUB printdocs
  457.   IF car%>0
  458.     GOTO bye
  459.   ENDIF
  460.   in$=""
  461. ENDIF
  462. '
  463. ' ======================================================================
  464. IF in$="L"
  465.   GOSUB listaccounts
  466.   IF car%>0
  467.     GOTO bye
  468.   ENDIF
  469.   in$=""
  470. ENDIF
  471. '
  472. ' ======================================================================
  473. IF in$="G"
  474.   GOSUB gamble
  475.   IF car%>0
  476.     GOTO bye
  477.   ENDIF
  478.   in$=""
  479. ENDIF
  480. '
  481. ' ======================================================================
  482. ' final check before looping.
  483. GOSUB tchk
  484. IF car%>0
  485.   GOTO bye
  486. ENDIF
  487. '
  488. in$=""
  489. GOTO main
  490. ' ======================================================================
  491. '
  492. bye:
  493. cs$="The Metro Time Bank was written by Peter Deane."
  494. GOSUB center
  495. o$=screenclr$+cr$+ansi$(6)+lcs$+cr$
  496. GOSUB 2
  497. cs$="Brought to you on "+bbsname$
  498. GOSUB center
  499. o$=cr$+cr$+ansi$(2)+lcs$
  500. GOSUB 2
  501. cs$="by "+sysopname$
  502. GOSUB center
  503. o$=cr$+cr$+ansi$(5)+lcs$
  504. GOSUB 2
  505. cs$="See you next time."
  506. GOSUB center
  507. o$=cr$+cr$+ansi$(3)+lcs$+cr$
  508. GOSUB 2
  509. IF EXIST("ram:userdata")
  510.   KILL "RAM:USERDATA"
  511. ENDIF
  512. PAUSE 25
  513. CLOSES 1
  514. GOSUB modem.c
  515. CLEAR
  516. END
  517. '
  518. ' *******************************************
  519. PROCEDURE deposit
  520.   ' *****************************************
  521.   '
  522.   depositentrance:
  523.   o$=CHR$(12)
  524.   GOSUB 2
  525.   o$=ansi$(5)+"       Deposit Time"+cr$+"       ~~~~~~~~~~~~"+cr$+cr$
  526.   GOSUB 2
  527.   availtime%=rtime%-5
  528.   IF availtime%>(maxdeposit%-deposits%)
  529.     availtime%=(maxdeposit%-deposits%)
  530.   ENDIF
  531.   IF availtime%<1
  532.     availtime%=0
  533.   ENDIF
  534.   o$=ansi$(6)+"You can deposit up to "+ansi$(1)+STR$(availtime%)+ansi$(6)+" minutes."
  535.   GOSUB 2
  536.   IF availtime%<1
  537.     GOSUB press
  538.     GOSUB 1
  539.     GOTO depositexit
  540.   ENDIF
  541.   o$=cr$+cr$+ansi$(3)+"Minutes to deposit? "+ansi$(2)
  542.   in%=4
  543.   il%=3
  544.   GOSUB 1
  545.   IF car%>0
  546.     GOTO depositexit
  547.   ENDIF
  548.   temp%=VAL(in$)
  549.   IF temp%>availtime%
  550.     GOTO depositentrance
  551.   ELSE IF temp%<1
  552.     GOTO depositexit
  553.   ENDIF
  554.   timechange%=-(temp%)
  555.   GOSUB adjusttime
  556.   deposits%=deposits%+temp%
  557.   depsnow%=depsnow%+temp%
  558.   balance%=balance%+temp%
  559.   GOSUB adjustaccounts
  560.   '
  561.   depositexit:
  562. RETURN
  563. '
  564. '
  565. ' *******************************************
  566. PROCEDURE withdraw
  567.   ' *****************************************
  568.   '
  569.   withdrawentrance:
  570.   o$=CHR$(12)
  571.   GOSUB 2
  572.   o$=ansi$(5)+"       Withdraw Time"+cr$+"       ~~~~~~~~~~~~~"+cr$+cr$
  573.   GOSUB 2
  574.   availtime%=balance%
  575.   IF balance%>maxwithdrawal%-withdrawals%
  576.     availtime%=maxwithdrawal%-withdrawals%
  577.   ENDIF
  578.   IF availtime%>balance%
  579.     availtime%=balance%
  580.   ENDIF
  581.   ' \/ needed as a failsafe... hmmm probably not - but better be sure they
  582.   ' can get out of this loop
  583.   IF availtime%<1
  584.     availtime%=0
  585.   ENDIF
  586.   o$=ansi$(6)+"You can withdraw up to "+ansi$(1)+STR$(availtime%)+ansi$(6)+" minutes."
  587.   GOSUB 2
  588.   IF availtime%<1
  589.     GOSUB press
  590.     GOSUB 1
  591.     GOTO withdrawexit
  592.   ENDIF
  593.   o$=cr$+cr$+ansi$(3)+"Minutes to withdraw? "+ansi$(1)
  594.   in%=4
  595.   il%=3
  596.   GOSUB 1
  597.   IF car%>0
  598.     GOTO withdrawexit
  599.   ENDIF
  600.   temp%=VAL(in$)
  601.   IF temp%>availtime%
  602.     GOTO withdrawentrance
  603.   ELSE IF temp%<1
  604.     GOTO withdrawexit
  605.   ENDIF
  606.   timechange%=(temp%)
  607.   GOSUB adjusttime
  608.   withdrawals%=withdrawals%+temp%
  609.   withsnow%=withsnow%+temp%
  610.   balance%=balance%-temp%
  611.   GOSUB adjustaccounts
  612.   '
  613.   withdrawexit:
  614.   ' /\ bit of a tautology, eh? :-)
  615.   '
  616. RETURN
  617. '
  618. '
  619. ' *******************************************
  620. PROCEDURE transfer
  621.   ' *****************************************
  622.   '
  623.   transferentrance:
  624.   o$=cr$+cr$+CHR$(12)
  625.   GOSUB 2
  626.   o$=ansi$(5)+"       Transfer Time"+cr$+"       ~~~~~~~~~~~~~"
  627.   GOSUB 2
  628.   availtime%=balance%
  629.   IF availtime%>maxtransfer%-transfers%
  630.     availtime%=maxtransfer%-transfers%
  631.   ENDIF
  632.   IF availtime%<1
  633.     availtime%=0
  634.   ENDIF
  635.   o$=cr$+cr$+ansi$(6)+"You can transfer up to "+ansi$(1)+STR$(availtime%)+ansi$(6)+" minutes."
  636.   GOSUB 2
  637.   IF availtime%<1
  638.     GOSUB press
  639.     GOSUB 1
  640.     GOTO transferexit
  641.   ENDIF
  642.   o$=cr$+cr$+ansi$(2)+"You may enter a full or PART name."
  643.   GOSUB 2
  644.   o$=cr$+cr$+ansi$(3)+"Transfer to which user? "+ansi$(1)
  645.   in%=2
  646.   il%=25
  647.   GOSUB 1
  648.   IF car%>0
  649.     GOTO transferexit
  650.   ENDIF
  651.   transto$=in$
  652.   transname$=""
  653.   OPEN "R",#2,path$+"Accounts",59
  654.   FIELD #2,25 AS acname$,6 AS acbal$,10 AS acdate$,6 AS acdep$,6 AS acwith$,6 AS actran$
  655.   FOR k%=1 TO users%
  656.     GET #2,k%
  657.     match2$=TRIM$(acname$)
  658.     IF INSTR(match2$,transto$)>0
  659.       transname$=TRIM$(acname$)
  660.       transnumber%=k%
  661.       k%=users%+50
  662.     ENDIF
  663.   NEXT k%
  664.   CLOSE #2
  665.   IF transname$=""
  666.     o$=cr$+cr$+ansi$(6)+"Sorry, that user has no account here!"+ansi$(7)
  667.     GOSUB 2
  668.     GOSUB press
  669.     GOSUB 1
  670.     GOTO transferexit
  671.   ENDIF
  672.   '
  673.   o$=ansi$(2)+cr$+cr$+"Transfer time to "+ansi$(1)+transname$+ansi$(2)+" (Y/n)? "
  674.   in%=3
  675.   il%=1
  676.   yes%=1
  677.   GOSUB 1
  678.   IF car%>0
  679.     GOTO transferexit
  680.   ENDIF
  681.   '
  682.   IF in$="NO"
  683.     o$=cr$+cr$+ansi$(6)+"Okay, transfer aborted."+ansi$(7)
  684.     GOSUB 2
  685.     GOSUB press
  686.     GOSUB 1
  687.     GOTO transferexit
  688.   ENDIF
  689.   '
  690.   o$=ansi$(3)+cr$+cr$+"Time to transfer: "+ansi$(5)
  691.   in%=4
  692.   il%=6
  693.   GOSUB 1
  694.   IF car%>0
  695.     GOTO transferexit
  696.   ENDIF
  697.   temp%=VAL(in$)
  698.   '
  699.   IF temp%>availtime%
  700.     o$=cr$+cr$+ansi$(6)+"You only have "+STR$(availtime%)+" minutes to transfer!"+ansi$(7)
  701.     GOSUB 2
  702.     GOSUB press
  703.     GOSUB 1
  704.     GOTO transferentrance
  705.   ELSE IF temp%<1
  706.     o$=cr$+cr$+ansi$(6)+"Okay, transfer aborted."+ansi$(7)
  707.     GOSUB 2
  708.     GOSUB press
  709.     GOSUB 1
  710.     GOTO transferexit
  711.   ENDIF
  712.   '
  713.   ' Fix up the online user's balance
  714.   '
  715.   transfers%=transfers%+temp%
  716.   balance%=balance%-temp%
  717.   GOSUB adjustaccounts
  718.   '
  719.   ' Fix up the recipient's stuff
  720.   '
  721.   OPEN "R",#2,path$+"Accounts",59
  722.   FIELD #2,25 AS acname$,6 AS acbal$,10 AS acdate$,6 AS acdep$,6 AS acwith$,6 AS actran$
  723.   GET #2,transnumber%
  724.   newbal$=STR$(VAL(acbal$)+temp%)
  725.   LSET acbal$=newbal$
  726.   PUT #2,transnumber%
  727.   CLOSE #2
  728.   '
  729.   ' write message
  730.   '
  731.   GOSUB tchk
  732.   cfile$=path$+transname$+".msg"
  733.   IF EXIST(cfile$)
  734.     OPEN "A",#2,cfile$,1024
  735.   ELSE
  736.     OPEN "O",#2,cfile$,1024
  737.   ENDIF
  738.   PRINT #2,""
  739.   PRINT #2,"----------------------------------------"
  740.   PRINT #2,uname$;" transferred ";temp%;" mins to"
  741.   PRINT #2,"your account at ";time1$
  742.   PRINT #2,"----------------------------------------"
  743.   CLOSE #2
  744.   '
  745.   o$=cr$+ansi$(5)+cr$+transname$+" has been notified of"
  746.   GOSUB 2
  747.   o$=cr$+"your transfer of "+STR$(temp%)+" minutes."
  748.   GOSUB 2
  749.   '
  750.   GOSUB press
  751.   GOSUB 1
  752.   transferexit:
  753. RETURN
  754. '
  755. '
  756. ' *******************************************
  757. PROCEDURE printdocs
  758.   ' *****************************************
  759.   o$=cr$+cr$+CHR$(12)
  760.   GOSUB 2
  761.   file$=path$+"PDBank.help"
  762.   GOSUB seq.o
  763.   GOSUB press
  764.   GOSUB 1
  765.   '
  766. RETURN
  767. '
  768. '
  769. ' *******************************************
  770. PROCEDURE listaccounts
  771.   ' *****************************************
  772.   accountlistentrance:
  773.   o$=cr$+cr$+CHR$(12)
  774.   GOSUB 2
  775.   o$=ansi$(5)+"       List Accounts"+cr$+"       ~~~~~~~~~~~~~"+cr$+cr$
  776.   GOSUB 2
  777.   o$=ansi$(2)+"List ALL accounts (Y/n)? "
  778.   in%=3
  779.   il%=1
  780.   yes%=1
  781.   GOSUB 1
  782.   IF car%>0
  783.     GOTO accountlistexit
  784.   ENDIF
  785.   type$=in$
  786.   IF type$="NO"
  787.     o$=cr$+ansi$(5)+"Enter search name or part of name."
  788.     GOSUB 2
  789.     o$=cr$+"(NO wildcards are needed)"
  790.     GOSUB 2
  791.     o$=cr$+cr$+ansi$(6)+"? : "
  792.     GOSUB 2
  793.     in%=2
  794.     il%=25
  795.     GOSUB 3
  796.     match$=in$
  797.   ENDIF
  798.   lncount%=3
  799.   modout%=1
  800.   in%=9
  801.   il%=1
  802.   banktotal%=0
  803.   '
  804.   o$=cr$+cr$+CHR$(12)
  805.   GOSUB 2
  806.   o$=ansi$(1)+"═════════════════════════════════════════"+cr$
  807.   GOSUB 2
  808.   o$=ansi$(3)+"Name                     Time  Last Visit"+cr$
  809.   GOSUB 2
  810.   o$=ansi$(1)+"═════════════════════════════════════════"+cr$
  811.   GOSUB 2
  812.   OPEN "R",#2,path$+"Accounts",59
  813.   FIELD #2,25 AS acname$,6 AS acbal$,10 AS acdate$,6 AS acdep$,6 AS acwith$,6 AS actran$
  814.   FOR k%=1 TO users%
  815.     GET #2,k%
  816.     match2$=TRIM$(acname$)
  817.     banktotal%=banktotal%+VAL(acbal$)
  818.     o$=ansi$(5)+acname$+ansi$(2)+acbal$+ansi$(6)+acdate$+cr$
  819.     IF type$="YES"
  820.       GOSUB 2
  821.       INC lncount%
  822.     ELSE
  823.       IF INSTR(match2$,match$)>0
  824.         GOSUB 2
  825.         INC lncount%
  826.       ENDIF
  827.     ENDIF
  828.     '
  829.     IF contin%=0
  830.       IF lncount%>=scrnht%
  831.         GOSUB pagepause
  832.       ENDIF
  833.     ENDIF
  834.     IF car%>0
  835.       k%=users%+50
  836.     ENDIF
  837.     IF abort%=1
  838.       abort%=0
  839.       k%=users%+50
  840.       ' /\ won't let me GOTO out of this - ah well, there's always another way!
  841.     ENDIF
  842.     '
  843.   NEXT k%
  844.   accountlistexit:
  845.   '
  846.   CLOSE #2
  847.   modout%=0
  848.   lncount%=0
  849.   contin%=0
  850.   o$=ansi$(1)+"═════════════════════════════════════════"+cr$
  851.   GOSUB 2
  852.   o$=ansi$(3)+STR$(users%)+ansi$(2)+" depositors have "+ansi$(3)+STR$(banktotal%)+ansi$(2)+" minutes on call"+cr$
  853.   GOSUB 2
  854.   o$=ansi$(1)+"═════════════════════════════════════════"
  855.   GOSUB 2
  856.   GOSUB press
  857.   GOSUB 1
  858. RETURN
  859. '
  860. '
  861. ' *******************************************
  862. PROCEDURE gamble
  863.   ' *****************************************
  864.   o$=cr$+cr$+CHR$(12)
  865.   GOSUB 2
  866.   o$=ansi$(5)+"       Gamble Time"+cr$+"       ~~~~~~~~~~~"+cr$+cr$
  867.   GOSUB 2
  868.   '
  869.   gambleentrance:
  870.   extra%=0
  871.   availtime%=rtime%-5
  872.   RANDOMIZE TIMER
  873.   o$=ansi$(2)+"Winnings now   : "+ansi$(5)+STR$(winnings%)
  874.   GOSUB 2
  875.   o$=cr$+ansi$(2)+"Available loot : "+ansi$(5)+STR$(availtime%)
  876.   GOSUB 2
  877.   IF availtime%<2
  878.     o$=cr$+cr$+ansi$(6)+"Sorry, you haven't got enough time!!"+ansi$(7)
  879.     GOSUB 2
  880.     GOSUB press
  881.     GOSUB 1
  882.     GOTO gambleexit
  883.   ENDIF
  884.   o$=cr$+cr$+ansi$(3)+"Your Bet       : "+ansi$(1)
  885.   in%=4
  886.   il%=6
  887.   GOSUB 1
  888.   IF car%>0
  889.     GOTO gambleexit
  890.   ENDIF
  891.   bet%=VAL(in$)
  892.   IF bet%<2
  893.     o$=cr$+cr$+ansi$(6)+"Okay, chicken. The bet's off!"+ansi$(7)
  894.     GOSUB 2
  895.     GOSUB press
  896.     GOSUB 1
  897.     GOTO gambleexit
  898.   ELSE IF bet%>availtime%
  899.     o$=cr$+cr$+ansi$(6)+"You ain't got that much, sucker!"+ansi$(7)
  900.     GOSUB 2
  901.     GOSUB press
  902.     GOSUB 1
  903.     IF car%>0
  904.       GOTO gambleexit
  905.     ENDIF
  906.     o$=cr$+cr$+CHR$(12)
  907.     GOSUB 2
  908.     GOTO gambleentrance
  909.   ELSE IF (bet% MOD 2)<>0
  910.     bet%=bet%-1
  911.     o$=cr$+cr$+ansi$(6)+"Your bet must be a EVEN amount."
  912.     GOSUB 2
  913.     o$=cr$+"Bet has been adjusted to "+ansi$(1)+STR$(bet%)
  914.     GOSUB 2
  915.     GOSUB press
  916.     GOSUB 1
  917.     IF car%>0
  918.       GOTO gambleexit
  919.     ENDIF
  920.   ENDIF
  921.   '
  922.   roll1%=RANDOM(6)+1
  923.   roll2%=RANDOM(6)+1
  924.   roll3%=RANDOM(6)+1
  925.   roll4%=RANDOM(6)+1
  926.   '
  927.   o$=cr$+cr$+ansi$(7)+"Rolling First Dice...."
  928.   GOSUB 2
  929.   DELAY 1
  930.   o$=cr$+cr$+ansi$(5)+"Your Roll : "+ansi$(6)+STR$(roll1%)
  931.   GOSUB 2
  932.   DELAY 1
  933.   o$=cr$+ansi$(5)+"House Roll: "+ansi$(6)+STR$(roll2%)
  934.   GOSUB 2
  935.   DELAY 1
  936.   IF roll1%>roll2%
  937.     o$=cr$+cr$+ansi$(2)+"You won "+STR$(bet%/2)+" minutes"+cr$
  938.     extra%=extra%+(bet%/2)
  939.   ELSE
  940.     o$=cr$+cr$+ansi$(1)+"You lost "+STR$(bet%/2)+" minutes"+cr$
  941.     extra%=extra%-(bet%/2)
  942.   ENDIF
  943.   GOSUB 2
  944.   '
  945.   DELAY 1
  946.   o$=cr$+ansi$(7)+"Rolling Second Dice...."
  947.   GOSUB 2
  948.   DELAY 1
  949.   o$=cr$+cr$+ansi$(5)+"Your Roll : "+ansi$(6)+STR$(roll3%)
  950.   GOSUB 2
  951.   DELAY 1
  952.   o$=cr$+ansi$(5)+"House Roll: "+ansi$(6)+STR$(roll4%)
  953.   GOSUB 2
  954.   DELAY 1
  955.   IF roll3%>roll4%
  956.     o$=cr$+cr$+ansi$(2)+"You won "+STR$(bet%/2)+" minutes"+cr$
  957.     extra%=extra%+(bet%/2)
  958.   ELSE
  959.     o$=cr$+cr$+ansi$(1)+"You lost "+STR$(bet%/2)+" minutes"+cr$
  960.     extra%=extra%-(bet%/2)
  961.   ENDIF
  962.   GOSUB 2
  963.   winnings%=winnings%+extra%
  964.   GOSUB tchk
  965.   IF extra%<>0
  966.     timechange%=extra%
  967.     GOSUB adjusttime
  968.   ENDIF
  969.   o$=cr$+cr$+ansi$(3)+"Another attempt (Y/n)? "
  970.   in%=3
  971.   il%=1
  972.   yes%=1
  973.   GOSUB 1
  974.   IF in$="NO" OR car%>0
  975.     GOTO gambleexit
  976.   ELSE
  977.     o$=cr$+cr$+CHR$(12)
  978.     GOSUB 2
  979.     GOTO gambleentrance
  980.   ENDIF
  981.   '
  982.   gambleexit:
  983. RETURN
  984. '
  985. ' *******************************************
  986. PROCEDURE printmenu
  987.   ' *****************************************
  988.   in%=9
  989.   il%=1
  990.   o$=cr$+cr$+CHR$(12)
  991.   GOSUB 2
  992.   modout%=1
  993.   o$=ansi$(1)+"           Metro TimeBank System"
  994.   GOSUB 2
  995.   IF cmd%=1 OR car%>0
  996.     GOTO pmenexit
  997.   ENDIF
  998.   '
  999.   o$=cr$+ansi$(7)+"     Copyright (c) 1991 by Peter Deane"
  1000.   GOSUB 2
  1001.   IF cmd%=1 OR car%>0
  1002.     GOTO pmenexit
  1003.   ENDIF
  1004.   '
  1005.   o$=cr$+ansi$(5)+" ═════════════════════════════════════════"
  1006.   GOSUB 2
  1007.   IF cmd%=1 OR car%>0
  1008.     GOTO pmenexit
  1009.   ENDIF
  1010.   '
  1011.   o$=cr$+ansi$(7)+" Statement For: "+ansi$(1)+uname$
  1012.   GOSUB 2
  1013.   IF cmd%=1 OR car%>0
  1014.     GOTO pmenexit
  1015.   ENDIF
  1016.   '
  1017.   o$=cr$+ansi$(5)+" ─────────────────────────────────────────"
  1018.   GOSUB 2
  1019.   IF cmd%=1 OR car%>0
  1020.     GOTO pmenexit
  1021.   ENDIF
  1022.   '
  1023.   o$=cr$+ansi$(3)+"    Time Balance:        "+ansi$(2)+STR$(balance%)
  1024.   GOSUB 2
  1025.   IF cmd%=1 OR car%>0
  1026.     GOTO pmenexit
  1027.   ENDIF
  1028.   '
  1029.   o$=cr$+ansi$(5)+" ─────────────────────────────────────────"
  1030.   GOSUB 2
  1031.   IF cmd%=1 OR car%>0
  1032.     GOTO pmenexit
  1033.   ENDIF
  1034.   '
  1035.   o$=cr$+ansi$(6)+"    Time Deposited:      "+ansi$(2)+STR$(deposits%)
  1036.   GOSUB 2
  1037.   IF cmd%=1 OR car%>0
  1038.     GOTO pmenexit
  1039.   ENDIF
  1040.   '
  1041.   o$=cr$+ansi$(6)+"    Time Withdrawn:      "+ansi$(1)+STR$(withdrawals%)
  1042.   GOSUB 2
  1043.   IF cmd%=1 OR car%>0
  1044.     GOTO pmenexit
  1045.   ENDIF
  1046.   '
  1047.   o$=cr$+ansi$(6)+"    Time Transferred:    "+ansi$(3)+STR$(transfers%)
  1048.   GOSUB 2
  1049.   IF cmd%=1 OR car%>0
  1050.     GOTO pmenexit
  1051.   ENDIF
  1052.   '
  1053.   o$=cr$+ansi$(5)+" ═════════════════════════════════════════"
  1054.   GOSUB 2
  1055.   IF cmd%=1 OR car%>0
  1056.     GOTO pmenexit
  1057.   ENDIF
  1058.   '
  1059.   o$=cr$+ansi$(7)+" Bank Limits For: "+ansi$(1)+bankname$
  1060.   GOSUB 2
  1061.   IF cmd%=1 OR car%>0
  1062.     GOTO pmenexit
  1063.   ENDIF
  1064.   '
  1065.   o$=cr$+ansi$(5)+" ─────────────────────────────────────────"
  1066.   GOSUB 2
  1067.   IF cmd%=1 OR car%>0
  1068.     GOTO pmenexit
  1069.   ENDIF
  1070.   '
  1071.   o$=cr$+ansi$(3)+"    Max Time Deposit:    "+ansi$(2)+STR$(maxdeposit%)
  1072.   GOSUB 2
  1073.   IF cmd%=1 OR car%>0
  1074.     GOTO pmenexit
  1075.   ENDIF
  1076.   '
  1077.   o$=cr$+ansi$(3)+"    Max Time Withdrawal: "+ansi$(1)+STR$(maxwithdrawal%)
  1078.   GOSUB 2
  1079.   IF cmd%=1 OR car%>0
  1080.     GOTO pmenexit
  1081.   ENDIF
  1082.   '
  1083.   o$=cr$+ansi$(3)+"    Max Time Transfer:   "+ansi$(3)+STR$(maxtransfer%)
  1084.   GOSUB 2
  1085.   IF cmd%=1 OR car%>0
  1086.     GOTO pmenexit
  1087.   ENDIF
  1088.   '
  1089.   o$=cr$+ansi$(5)+" ═════════════════════════════════════════"
  1090.   GOSUB 2
  1091.   IF cmd%=1 OR car%>0
  1092.     GOTO pmenexit
  1093.   ENDIF
  1094.   '
  1095.   o$=cr$+ansi$(1)+"   <"+ansi$(7)+"H"+ansi$(1)+">"+ansi$(2)+"elp               "+ansi$(1)+"<"+ansi$(7)+"D"+ansi$(1)+">"+ansi$(2)+"eposit Time"
  1096.   GOSUB 2
  1097.   IF cmd%=1 OR car%>0
  1098.     GOTO pmenexit
  1099.   ENDIF
  1100.   '
  1101.   o$=cr$+ansi$(1)+"   <"+ansi$(7)+"W"+ansi$(1)+">"+ansi$(2)+"ithdraw Time      "+ansi$(1)+"<"+ansi$(7)+"T"+ansi$(1)+">"+ansi$(2)+"ransfer Time"
  1102.   GOSUB 2
  1103.   IF cmd%=1 OR car%>0
  1104.     GOTO pmenexit
  1105.   ENDIF
  1106.   '
  1107.   o$=cr$+ansi$(1)+"   <"+ansi$(7)+"L"+ansi$(1)+">"+ansi$(2)+"ist Accounts      "+ansi$(1)+"<"+ansi$(7)+"G"+ansi$(1)+">"+ansi$(2)+"amble"
  1108.   GOSUB 2
  1109.   IF cmd%=1 OR car%>0
  1110.     GOTO pmenexit
  1111.   ENDIF
  1112.   '
  1113.   o$=cr$+ansi$(1)+"   <"+ansi$(7)+"Q"+ansi$(1)+">"+ansi$(2)+"uit               "+ansi$(1)+"<"+ansi$(7)+"R"+ansi$(1)+">"+ansi$(2)+"econfigure"
  1114.   GOSUB 2
  1115.   pmenexit:
  1116.   modout%=0
  1117.   '
  1118. RETURN
  1119. '
  1120. '
  1121. ' *******************************************
  1122. PROCEDURE adjusttime
  1123.   ' *****************************************
  1124.   ' this works!!! (with a change or two in Metro!!)
  1125.   '
  1126.   IF test%<>1
  1127.     OPEN "I",#2,"ram:doordata",1028
  1128.     k%=0
  1129.     WHILE NOT EOF(#2)
  1130.       INC k%
  1131.       LINE INPUT #2,hold$(k%)
  1132.     WEND
  1133.     CLOSE #2
  1134.     dd.lines%=k%
  1135.     secs%=VAL(hold$(5))
  1136.     secs%=secs%+(60*timechange%)
  1137.     hold$(5)=STR$(secs%)
  1138.     OPEN "O",#2,"ram:DOORDATA",1028
  1139.     FOR k%=1 TO dd.lines%
  1140.       PRINT #2,hold$(k%)
  1141.     NEXT k%
  1142.     CLOSE #2
  1143.   ENDIF
  1144.   '
  1145. RETURN
  1146. '
  1147. ' *******************************************
  1148. PROCEDURE adjustaccounts
  1149.   ' *****************************************
  1150.   GOSUB dateconv
  1151.   ' /\ hmm - probably is the same day, but what the hell!
  1152.   OPEN "R",#2,path$+"Accounts",59
  1153.   FIELD #2,25 AS acname$,6 AS acbal$,10 AS acdate$,6 AS acdep$,6 AS acwith$,6 AS actran$
  1154.   '
  1155.   LSET acname$=uname$
  1156.   LSET acbal$=STR$(balance%)
  1157.   LSET acdate$=pd.date$
  1158.   LSET acdep$=STR$(deposits%)
  1159.   LSET acwith$=STR$(withdrawals%)
  1160.   LSET actran$=STR$(transfers%)
  1161.   '
  1162.   PUT #2,acnumber%
  1163.   CLOSE #2
  1164.   '
  1165. RETURN
  1166. ' *******************************************
  1167. PROCEDURE sysop
  1168.   ' *****************************************
  1169.   '
  1170.   maintloop:
  1171.   IF lev%<>9
  1172.     GOTO sysopexit
  1173.   ENDIF
  1174.   '
  1175.   o$=cr$+CHR$(12)+ansi$(5)+"Sysop Maintenance Menu"+cr$+"~~~~~~~~~~~~~~~~~~~~~~"+cr$
  1176.   GOSUB 2
  1177.   o$=cr$+ansi$(1)+"["+ansi$(7)+"D"+ansi$(1)+"]"+ansi$(3)+"elete A User"
  1178.   GOSUB 2
  1179.   o$=cr$+ansi$(1)+"["+ansi$(7)+"E"+ansi$(1)+"]"+ansi$(2)+"dit A User"
  1180.   GOSUB 2
  1181.   o$=cr$+ansi$(1)+"["+ansi$(7)+"A"+ansi$(1)+"]"+ansi$(5)+"dd A User"
  1182.   GOSUB 2
  1183.   o$=cr$+ansi$(1)+"["+ansi$(7)+"L"+ansi$(1)+"]"+ansi$(7)+"ist Accounts"
  1184.   GOSUB 2
  1185.   o$=cr$+ansi$(1)+"["+ansi$(7)+"Q"+ansi$(1)+"]"+ansi$(4)+"uit"
  1186.   GOSUB 2
  1187.   '
  1188.   o$=cr$+cr$+ansi$(6)+"Enter Command: "+ansi$(7)
  1189.   in%=0
  1190.   il%=1
  1191.   GOSUB 1
  1192.   cmd$=in$
  1193.   '
  1194.   IF car%>0 OR cmd$="Q"
  1195.     GOTO sysopexit
  1196.   ENDIF
  1197.   '
  1198.   IF cmd$="L"
  1199.     GOSUB listaccounts
  1200.     IF car%>0
  1201.       GOTO sysopexit
  1202.     ELSE
  1203.       cmd$=""
  1204.       GOTO maintloop
  1205.     ENDIF
  1206.   ENDIF
  1207.   '
  1208.   IF cmd$="A"
  1209.     '
  1210.     cmd$=""
  1211.     o$=cr$+cr$+ansi$(3)+"Enter User's Name to Add: "+ansi$(1)
  1212.     in%=2
  1213.     il%=25
  1214.     GOSUB 1
  1215.     IF car%>0
  1216.       GOTO sysopexit
  1217.     ENDIF
  1218.     addname$=in$
  1219.     '
  1220.     o$=cr$+cr$+ansi$(1)+"Add "+ansi$(3)+addname$+ansi$(1)+" (y/N)? "+ansi$(7)
  1221.     in%=3
  1222.     il%=1
  1223.     yes%=0
  1224.     GOSUB 1
  1225.     IF car%>0
  1226.       GOTO sysopexit
  1227.     ELSE IF in$="NO"
  1228.       o$=cr$+cr$+ansi$(6)+"Okay. Addition aborted!"+cr$
  1229.       GOSUB 2
  1230.       GOSUB press
  1231.       GOSUB 1
  1232.       IF car%>0
  1233.         GOTO sysopexit
  1234.       ELSE
  1235.         GOTO maintloop
  1236.       ENDIF
  1237.     ENDIF
  1238.     '
  1239.     GOSUB dateconv
  1240.     OPEN "R",#2,path$+"Accounts",59
  1241.     FIELD #2,25 AS acname$,6 AS acbal$,10 AS acdate$,6 AS acdep$,6 AS acwith$,6 AS actran$
  1242.     INC users%
  1243.     LSET acname$=addname$
  1244.     LSET acbal$="0"
  1245.     LSET acdate$=pd.date$
  1246.     LSET acdep$="0"
  1247.     LSET acwith$="0"
  1248.     LSET actran$="0"
  1249.     PUT #2,users%
  1250.     CLOSE #2
  1251.     o$=cr$+cr$+ansi$(3)+addname$+ansi$(5)+" has an account. You can now [E]dit it if you like."
  1252.     GOSUB 2
  1253.     GOSUB press
  1254.     GOSUB 1
  1255.     IF car%>0
  1256.       GOTO sysopexit
  1257.     ELSE
  1258.       GOTO maintloop
  1259.     ENDIF
  1260.   ENDIF
  1261.   '
  1262.   o$=cr$+cr$+ansi$(3)+"Enter User Name: "+ansi$(1)
  1263.   in%=2
  1264.   il%=25
  1265.   GOSUB 1
  1266.   IF car%>0
  1267.     GOTO sysopexit
  1268.   ENDIF
  1269.   IF in$=""
  1270.     GOTO maintloop
  1271.   ENDIF
  1272.   match1$=in$
  1273.   edname$=""
  1274.   OPEN "R",#2,path$+"Accounts",59
  1275.   FIELD #2,25 AS acname$,6 AS acbal$,10 AS acdate$,6 AS acdep$,6 AS acwith$,6 AS actran$
  1276.   FOR k%=1 TO users%
  1277.     GET #2,k%
  1278.     match2$=TRIM$(acname$)
  1279.     IF match2$=match1$
  1280.       edname$=TRIM$(acname$)
  1281.       ednumber%=k%
  1282.       k%=users%+50
  1283.     ENDIF
  1284.   NEXT k%
  1285.   CLOSE #2
  1286.   IF edname$=""
  1287.     o$=cr$+ansi$(6)+"No Such Account!"
  1288.     GOSUB 2
  1289.     GOSUB press
  1290.     GOSUB 1
  1291.     IF car%>0
  1292.       GOTO sysopexit
  1293.     ENDIF
  1294.     GOTO maintloop
  1295.   ENDIF
  1296.   '
  1297.   IF cmd$="D" AND lev%=9
  1298.     o$=cr$+cr$+ansi$(1)+"Delete "+ansi$(3)+edname$+ansi$(1)+" (y/N)? "+ansi$(7)
  1299.     in%=3
  1300.     il%=1
  1301.     yes%=0
  1302.     GOSUB 1
  1303.     '
  1304.     IF edname$=uname$
  1305.       o$=cr$+cr$+ansi$(6)+"You can't delete YOURSELF, numbskull!!"
  1306.       GOSUB 2
  1307.       GOSUB press
  1308.       GOSUB 1
  1309.       IF car%>0
  1310.         GOTO sysopexit
  1311.       ENDIF
  1312.       GOTO maintloop
  1313.     ENDIF
  1314.     '
  1315.     IF car%>0
  1316.       GOTO sysopexit
  1317.     ELSE IF in$="NO"
  1318.       GOTO maintloop
  1319.     ENDIF
  1320.     '
  1321.     o$=cr$+ansi$(2)+"Last Chance !!!"
  1322.     GOSUB 2
  1323.     o$=cr$+cr$+ansi$(1)+"Delete "+ansi$(3)+edname$+ansi$(1)+" (y/N)? "+ansi$(7)
  1324.     in%=3
  1325.     il%=1
  1326.     yes%=0
  1327.     GOSUB 1
  1328.     IF car%>0
  1329.       GOTO sysopexit
  1330.     ELSE IF in$="NO"
  1331.       GOTO maintloop
  1332.     ENDIF
  1333.     '
  1334.     OPEN "R",#2,path$+"Accounts",59
  1335.     FIELD #2,25 AS acname$,6 AS acbal$,10 AS acdate$,6 AS acdep$,6 AS acwith$,6 AS actran$
  1336.     OPEN "O",#3,path$+"Accounts.temp",4096
  1337.     FOR k%=1 TO users%
  1338.       GET #2,k%
  1339.       IF k%<>ednumber%
  1340.         PRINT #3,acname$
  1341.         PRINT #3,acbal$
  1342.         PRINT #3,acdate$
  1343.         PRINT #3,acdep$
  1344.         PRINT #3,acwith$
  1345.         PRINT #3,actran$
  1346.       ENDIF
  1347.     NEXT k%
  1348.     CLOSE #2
  1349.     CLOSE #3
  1350.     DEC users%
  1351.     KILL path$+"accounts"
  1352.     OPEN "R",#2,path$+"Accounts",59
  1353.     FIELD #2,25 AS acname$,6 AS acbal$,10 AS acdate$,6 AS acdep$,6 AS acwith$,6 AS actran$
  1354.     OPEN "I",#3,path$+"Accounts.temp",4096
  1355.     FOR k%=1 TO users%
  1356.       LINE INPUT #3,acname$
  1357.       LINE INPUT #3,acbal$
  1358.       LINE INPUT #3,acdate$
  1359.       LINE INPUT #3,acdep$
  1360.       LINE INPUT #3,acwith$
  1361.       LINE INPUT #3,actran$
  1362.       PUT #2,k%
  1363.     NEXT k%
  1364.     CLOSE #3
  1365.     CLOSE #2
  1366.     KILL path$+"Accounts.temp"
  1367.     '
  1368.     IF EXIST(path$+edname$+".msg")
  1369.       KILL path$+edname$+".msg"
  1370.     ENDIF
  1371.     '
  1372.     o$=cr$+cr$+ansi$(6)+edname$+ansi$(1)+" Deleted!!!"+ansi$(7)
  1373.     GOSUB 2
  1374.     GOSUB press
  1375.     GOSUB 1
  1376.   ENDIF
  1377.   '
  1378.   IF cmd$="E" AND lev%=9
  1379.     OPEN "R",#2,path$+"Accounts",59
  1380.     FIELD #2,25 AS acname$,6 AS acbal$,10 AS acdate$,6 AS acdep$,6 AS acwith$,6 AS actran$
  1381.     GET #2,ednumber%
  1382.     edname$=TRIM$(acname$)
  1383.     edbal$=TRIM$(acbal$)
  1384.     eddate$=TRIM$(acdate$)
  1385.     eddep$=TRIM$(acdep$)
  1386.     edwith$=TRIM$(acwith$)
  1387.     edtran$=TRIM$(actran$)
  1388.     CLOSE #2
  1389.     '
  1390.     edloop:
  1391.     o$=cr$+CHR$(12)
  1392.     GOSUB 2
  1393.     o$=cr$+ansi$(5)+"(1) "+ansi$(2)+"User Name         : "+ansi$(1)+edname$
  1394.     GOSUB 2
  1395.     o$=cr$+ansi$(5)+"(2) "+ansi$(2)+"Time Balance      : "+ansi$(1)+edbal$
  1396.     GOSUB 2
  1397.     o$=cr$+ansi$(5)+"(3) "+ansi$(2)+"Last Date         : "+ansi$(1)+eddate$
  1398.     GOSUB 2
  1399.     o$=cr$+ansi$(5)+"(4) "+ansi$(2)+"Deposits Today    : "+ansi$(1)+eddep$
  1400.     GOSUB 2
  1401.     o$=cr$+ansi$(5)+"(5) "+ansi$(2)+"Withdrawals Today : "+ansi$(1)+edwith$
  1402.     GOSUB 2
  1403.     o$=cr$+ansi$(5)+"(6) "+ansi$(2)+"Transfers Today   : "+ansi$(1)+edtran$
  1404.     GOSUB 2
  1405.     o$=cr$+cr$+ansi$(3)+"Enter number to edit (<rtn> saves changes): "
  1406.     in%=0
  1407.     il%=1
  1408.     GOSUB 1
  1409.     IF car%>0
  1410.       GOTO sysopexit
  1411.     ENDIF
  1412.     edbit%=VAL(in$)
  1413.     IF edbit%=0 OR edbit%>6
  1414.       OPEN "R",#2,path$+"Accounts",59
  1415.       FIELD #2,25 AS acname$,6 AS acbal$,10 AS acdate$,6 AS acdep$,6 AS acwith$,6 AS actran$
  1416.       LSET acname$=edname$
  1417.       LSET acbal$=edbal$
  1418.       LSET acdate$=eddate$
  1419.       LSET acdep$=eddep$
  1420.       LSET acwith$=edwith$
  1421.       LSET actran$=edtran$
  1422.       PUT #2,ednumber%
  1423.       CLOSE #2
  1424.       GOTO maintloop
  1425.     ELSE IF edbit%=1
  1426.       o$=cr$+cr$+ansi$(6)+"Enter New Name : "+ansi$(7)
  1427.       in%=2
  1428.       il%=25
  1429.       GOSUB 1
  1430.       IF car%>0
  1431.         GOTO sysopexit
  1432.       ENDIF
  1433.       IF in$<>""
  1434.         edname$=in$
  1435.       ENDIF
  1436.       GOTO edloop
  1437.     ELSE IF edbit%=2
  1438.       o$=cr$+cr$+ansi$(6)+"Enter New Balance : "+ansi$(7)
  1439.       in%=4
  1440.       il%=6
  1441.       GOSUB 1
  1442.       IF car%>0
  1443.         GOTO sysopexit
  1444.       ENDIF
  1445.       IF in$<>""
  1446.         edbal$=in$
  1447.       ENDIF
  1448.     ELSE IF edbit%=3
  1449.       o$=cr$+cr$+ansi$(6)+"Enter Last Date : "+ansi$(7)
  1450.       in%=1
  1451.       il%=9
  1452.       GOSUB 1
  1453.       IF car%>0
  1454.         GOTO sysopexit
  1455.       ENDIF
  1456.       IF in$<>""
  1457.         eddate$=in$
  1458.       ENDIF
  1459.     ELSE IF edbit%=4
  1460.       o$=cr$+cr$+ansi$(6)+"Enter Today's Deposits : "+ansi$(7)
  1461.       in%=4
  1462.       il%=6
  1463.       GOSUB 1
  1464.       IF car%>0
  1465.         GOTO sysopexit
  1466.       ENDIF
  1467.       IF in$<>""
  1468.         eddep$=in$
  1469.       ENDIF
  1470.     ELSE IF edbit%=5
  1471.       o$=cr$+cr$+ansi$(6)+"Enter Today's Withdrawals : "+ansi$(7)
  1472.       in%=4
  1473.       il%=6
  1474.       GOSUB 1
  1475.       IF car%>0
  1476.         GOTO sysopexit
  1477.       ENDIF
  1478.       IF in$<>""
  1479.         edwith$=in$
  1480.       ENDIF
  1481.     ELSE IF edbit%=6
  1482.       o$=cr$+cr$+ansi$(6)+"Enter Today's Transfers : "+ansi$(7)
  1483.       in%=4
  1484.       il%=6
  1485.       GOSUB 1
  1486.       IF car%>0
  1487.         GOTO sysopexit
  1488.       ENDIF
  1489.       IF in$<>""
  1490.         edtran$=in$
  1491.       ENDIF
  1492.     ENDIF
  1493.     IF car%=0
  1494.       GOTO edloop
  1495.     ENDIF
  1496.     '
  1497.     cmd$=""
  1498.   ENDIF
  1499.   '
  1500.   IF car%=0
  1501.     GOTO maintloop
  1502.   ENDIF
  1503.   '
  1504.   sysopexit:
  1505. RETURN
  1506. '
  1507. '
  1508. '
  1509. '
  1510. PROCEDURE 1
  1511.   GOSUB 2
  1512.   GOSUB 3
  1513. RETURN
  1514. '
  1515. '
  1516. PROCEDURE 2
  1517.   '
  1518.   IF ring%=1
  1519.     PRINT #1,o$;
  1520.   ENDIF
  1521.   IF icon%=0
  1522.     PRINT o$;
  1523.   ENDIF
  1524.   IF (modout%=1)
  1525.     GOSUB 3
  1526.   ENDIF
  1527.   2.1:
  1528.   o$=""
  1529. RETURN
  1530. '
  1531. '
  1532. PROCEDURE 3
  1533.   idle%=CINT(TIMER/200)
  1534.   key$=""
  1535.   in$=""
  1536.   in1$=""
  1537.   a%=0
  1538.   keyy%=0
  1539.   b%=0
  1540.   car%=0
  1541.   cmd%=0
  1542.   DO
  1543.     IF MOUSEK=3
  1544.       ALERT 0,"Really kill the Door?",2,"Yes|No",pdq%
  1545.       IF pdq%=1
  1546.         END
  1547.       ENDIF
  1548.       ' reset idle timer after returning from Alert
  1549.       idle%=CINT(TIMER/200)
  1550.     ENDIF
  1551.     IF ring%=1
  1552.       cd%=0
  1553.       cd%=LPEEK(12570624)
  1554.       cd%=cd% AND 8192
  1555.       IF cd%<>0
  1556.         car%=1
  1557.         keyy%=1
  1558.       ENDIF
  1559.     ENDIF
  1560.     key$=INKEY$
  1561.     IF key$<>""
  1562.       GOTO mod.in1
  1563.     ENDIF
  1564.     '
  1565.     IF ring%=1
  1566.       IF LOC(#1)>0
  1567.         in1$=INPUT$(1,#1)
  1568.         key$=in1$
  1569.         in1$=""
  1570.       ENDIF
  1571.     ENDIF
  1572.     '
  1573.     mod.in1:
  1574.     IF key$=CHR$(19)
  1575.       pau$=""
  1576.       hold%=CINT(TIMER/200)
  1577.       WHILE CINT(TIMER/200)<hold%+45
  1578.         pau$=INKEY$
  1579.         IF pau$<>""
  1580.           key$=""
  1581.           pau$=""
  1582.           GOTO mod.in1.1
  1583.         ENDIF
  1584.         IF ring%=1
  1585.           IF LOC(#1)>0
  1586.             key$=""
  1587.             pau$=""
  1588.             GOTO mod.in1.1
  1589.           ENDIF
  1590.         ENDIF
  1591.       WEND
  1592.       key$=""
  1593.       pau$=""
  1594.       GOTO mod.in1.1
  1595.     ENDIF
  1596.     '
  1597.     mod.in1.1:
  1598.     IF modout%=1 AND key$=""
  1599.       cmd%=0
  1600.       keyy%=1
  1601.     ENDIF
  1602.     IF modout%=1 AND key$=CHR$(32)
  1603.       abort%=1
  1604.       GOTO 2.1
  1605.     ENDIF
  1606.     IF modout%=1 AND key$<>CHR$(32)
  1607.       keyy%=1
  1608.     ENDIF
  1609.     IF key$=""
  1610.       GOTO mod.in2
  1611.     ENDIF
  1612.     mod.in1.5:
  1613.     a%=ASC(key$)
  1614.     b%=LEN(in$)
  1615.     IF a%=13
  1616.       GOTO mod.in1.6
  1617.     ENDIF
  1618.     IF (a%=8 OR a%=127) AND LEN(in$)>=1
  1619.       in$=LEFT$(in$,b%-1)
  1620.       DEC b%
  1621.       o$=de$
  1622.       GOSUB 2
  1623.     ENDIF
  1624.     IF b%=il%
  1625.       GOTO mod.in2
  1626.     ENDIF
  1627.     IF in%=0
  1628.       IF a%>31 AND a%<126
  1629.         IF cmd%=1
  1630.           cmdmenu%=0
  1631.           dismsg%=0
  1632.         ENDIF
  1633.         key$=UPPER$(key$)
  1634.         o$=key$+cr$
  1635.         GOSUB 2
  1636.         in$=key$
  1637.         keyy%=1
  1638.       ENDIF
  1639.     ENDIF
  1640.     mod.in1.6:
  1641.     IF in%=1 AND a%>31 AND a%<126
  1642.       o$=key$
  1643.       GOSUB 2
  1644.       in$=in$+key$
  1645.     ENDIF
  1646.     IF in%=2 AND a%>31 AND a%<126
  1647.       key$=UPPER$(key$)
  1648.       o$=key$
  1649.       GOSUB 2
  1650.       in$=in$+key$
  1651.     ENDIF
  1652.     IF in%=3
  1653.       IF a%=13 AND yes%=1
  1654.         o$="YES"
  1655.         GOSUB 2
  1656.         in$="YES"
  1657.         keyy%=1
  1658.       ENDIF
  1659.       IF a%=13 AND yes%=0
  1660.         o$="NO"
  1661.         GOSUB 2
  1662.         in$="NO"
  1663.         keyy%=1
  1664.       ENDIF
  1665.       IF a%=89 OR a%=121
  1666.         o$="YES"+cr$
  1667.         GOSUB 2
  1668.         in$="YES"
  1669.         keyy%=1
  1670.       ENDIF
  1671.       IF a%=78 OR a%=110
  1672.         o$="NO"+cr$
  1673.         GOSUB 2
  1674.         in$="NO"
  1675.         keyy%=1
  1676.       ENDIF
  1677.     ENDIF
  1678.     IF in%=4 AND a%>47 AND a%<58
  1679.       o$=key$
  1680.       GOSUB 2
  1681.       in$=in$+key$
  1682.     ENDIF
  1683.     IF in%=5
  1684.       IF (a%=8 OR a%=127) AND LEN(ln$(ln%))>=1
  1685.         ln$(ln%)=LEFT$(ln$(ln%),LEN(ln$(ln%))-1)
  1686.         o$=de$
  1687.         GOSUB 2
  1688.         keyy%=1
  1689.       ENDIF
  1690.       IF a%=13
  1691.         in$=key$
  1692.         keyy%=1
  1693.       ENDIF
  1694.       IF a%=9
  1695.         o$="     "
  1696.         GOSUB 2
  1697.         in$="     "
  1698.         keyy%=1
  1699.       ENDIF
  1700.       IF a%>26 AND a%<127
  1701.         o$=key$
  1702.         GOSUB 2
  1703.         in$=key$
  1704.         keyy%=1
  1705.       ENDIF
  1706.     ENDIF
  1707.     '
  1708.     ' new one: no echoing of input at all! Good for More (Y/n)? stuff, etc...
  1709.     '
  1710.     IF in%=9
  1711.       IF a%>31 AND a%<126
  1712.         key$=UPPER$(key$)
  1713.         in$=key$
  1714.         keyy%=1
  1715.         cmd%=1
  1716.       ENDIF
  1717.     ENDIF
  1718.     '
  1719.     mod.in1.7:
  1720.     IF a%=13
  1721.       IF (in%<>5 AND in%<>7 AND in%<>9)
  1722.         o$=cr$
  1723.         GOSUB 2
  1724.         keyy%=1
  1725.       ENDIF
  1726.       IF in%=9
  1727.         keyy%=1
  1728.       ENDIF
  1729.     ENDIF
  1730.     mod.in2:
  1731.     IF CINT(TIMER/200)>idle%+300
  1732.       IF lev%>7 AND CINT(TIMER/200)>idle%+600
  1733.         car%=1
  1734.         keyy%=1
  1735.       ENDIF
  1736.       IF lev%<8
  1737.         car%=1
  1738.         keyy%=1
  1739.       ENDIF
  1740.     ENDIF
  1741.     mod.in2.0:
  1742.   LOOP UNTIL keyy%=1
  1743.   '
  1744.   mod.in2.1:
  1745. RETURN
  1746. '
  1747. '
  1748. PROCEDURE seq.o
  1749.   '
  1750.   IF NOT EXIST(file$)
  1751.     o$=cr$+cr$+ansi$(1)+"File Not Found..."+ansi$(7)
  1752.     GOSUB 2
  1753.     GOSUB press
  1754.     GOSUB 1
  1755.     GOTO seq.o9
  1756.   ENDIF
  1757.   lncount%=0
  1758.   modout%=1
  1759.   in%=9
  1760.   il%=1
  1761.   OPEN "I",#2,file$,4096
  1762.   '
  1763.   DO UNTIL EOF(#2)
  1764.     LINE INPUT #2,text$
  1765.     INC lncount%
  1766.     o$=text$+cr$
  1767.     GOSUB 2
  1768.     IF contin%=0
  1769.       IF lncount%>=scrnht%
  1770.         GOSUB pagepause
  1771.       ENDIF
  1772.     ENDIF
  1773.     IF car%>0
  1774.       GOTO seq.o9
  1775.     ENDIF
  1776.     IF abort%=1
  1777.       CLOSE #2
  1778.       abort%=0
  1779.       GOTO seq.o9
  1780.     ENDIF
  1781.   LOOP
  1782.   CLOSE #2
  1783.   seq.o9:
  1784.   modout%=0
  1785.   contin%=0
  1786.   o$=ansi$(0)
  1787.   GOSUB 2
  1788. RETURN
  1789. '
  1790. '
  1791. PROCEDURE center
  1792.   lcs%=LEN(cs$)
  1793.   lcs$=SPACE$(38-lcs%/2)+cs$
  1794. RETURN
  1795. '
  1796. PROCEDURE press
  1797.   o$=cr$+cr$+ansi$(0)+"[Any_Key] "
  1798.   in%=0
  1799.   il%=1
  1800. RETURN
  1801. '
  1802. PROCEDURE correct
  1803.   ' not sure if this is used??
  1804.   o$=cr$+cr$+"Is This Correct? (Y/n) "
  1805.   yes%=1
  1806.   in%=3
  1807.   il%=1
  1808. RETURN
  1809. '
  1810. PROCEDURE pagepause
  1811.   modout%=0
  1812.   o$="More (Y/n/c)?"
  1813.   GOSUB 2
  1814.   in%=9
  1815.   il%=1
  1816.   GOSUB 3
  1817.   IF car%>0
  1818.     GOTO pagepause9
  1819.   ENDIF
  1820.   o$=de$+de$+de$+de$+de$+de$+de$+de$+de$+de$+de$+de$+de$
  1821.   GOSUB 2
  1822.   IF in$=" " OR in$="N"
  1823.     abort%=1
  1824.   ENDIF
  1825.   IF in$="C"
  1826.     contin%=1
  1827.   ENDIF
  1828.   lncount%=0
  1829.   modout%=1
  1830.   pagepause9:
  1831. RETURN
  1832. '
  1833. PROCEDURE time1
  1834.   t.t%=FRE(0)
  1835.   time1$=TIME$
  1836.   t.t%=VAL(LEFT$(time1$,2))
  1837.   IF t.t%>11
  1838.     a$=" PM"
  1839.   ELSE
  1840.     a$=" AM"
  1841.   ENDIF
  1842.   IF t.t%=0
  1843.     t.t%=12
  1844.     time1$=RIGHT$(STR$(t.t%),2)+RIGHT$(time1$,6)
  1845.   ELSE IF t.t%<10
  1846.     time1$=RIGHT$(STR$(t.t%),1)+RIGHT$(time1$,6)
  1847.   ELSE IF t.t%>21
  1848.     t.t%=t.t%-12
  1849.     time1$=RIGHT$(STR$(t.t%),2)+RIGHT$(time1$,6)
  1850.   ELSE IF t.t%>12
  1851.     t.t%=t.t%-12
  1852.     time1$=RIGHT$(STR$(t.t%),1)+RIGHT$(time1$,6)
  1853.   ENDIF
  1854.   GOSUB dateconv
  1855.   pd.time$=time1$+a$
  1856.   time1$=pd.time$+"  "+pd.date$
  1857. RETURN
  1858. '
  1859. PROCEDURE tchk
  1860.   GOSUB time1
  1861.   timenow%=CINT(TIMER/200)
  1862.   ctime%=(timenow%-timeon%)
  1863.   ctime%=CINT(ctime%/60)
  1864.   rtime%=tpc%-ctime%-depsnow%+withsnow%+winnings%
  1865.   IF rtime%<=0
  1866.     o$=cr$+cr$+"Sorry, Time Limit Exceeded!"
  1867.     GOSUB 2
  1868.     DELAY 2
  1869.     car%=2
  1870.   ENDIF
  1871. RETURN
  1872. '
  1873. PROCEDURE modem.c
  1874.   CLOSE #1
  1875. RETURN
  1876. '
  1877. PROCEDURE modem.o
  1878.   OPEN "",#1,"COM1:"+bd$+",n,8,1",4096
  1879.   DELAY 1
  1880. RETURN
  1881. '
  1882. '         ************
  1883. PROCEDURE setpagepause
  1884.   '       ************
  1885.   '
  1886.   oldscrnht%=scrnht%
  1887.   o$=cr$+cr$+ansi$(2)+"Current Screen Height: "+ansi$(5)+STR$(oldscrnht%)
  1888.   GOSUB 2
  1889.   o$=cr$+cr$+ansi$(3)+"Change Screen Height (y/N)? "
  1890.   in%=3
  1891.   il%=1
  1892.   yes%=0
  1893.   GOSUB 1
  1894.   IF in$="NO" OR car%>0
  1895.     GOTO pauseexit
  1896.   ENDIF
  1897.   o$=cr$+ansi$(2)+"New Screen Height: "+ansi$(1)
  1898.   in%=4
  1899.   il%=2
  1900.   GOSUB 1
  1901.   IF in$="" OR car%>0
  1902.     GOTO pauseexit
  1903.   ENDIF
  1904.   scrnht%=VAL(in$)
  1905.   o$=cr$+ansi$(3)+"Are "+ansi$(1)+STR$(scrnht%)+ansi$(3)+" lines okay (Y/n)? "
  1906.   in%=3
  1907.   il%=1
  1908.   yes%=1
  1909.   GOSUB 1
  1910.   IF in$="YES" OR car%>0
  1911.     GOTO pauseexit
  1912.   ENDIF
  1913.   scrnht%=oldscrnht%
  1914.   o$=cr$+cr$+ansi$(1)+"No Change"
  1915.   GOSUB 2
  1916.   GOSUB press
  1917.   GOSUB 1
  1918.   '
  1919.   pauseexit:
  1920. RETURN
  1921. '
  1922. '         *******
  1923. PROCEDURE setansi
  1924.   '       *******
  1925.   '
  1926.   o$=cr$+cr$+"Do you want ANSI (Y/n)? "
  1927.   in%=3
  1928.   il%=1
  1929.   yes%=1
  1930.   GOSUB 1
  1931.   IF car%>0
  1932.     GOTO setansi9
  1933.   ENDIF
  1934.   '
  1935.   IF in$="YES"
  1936.     ansi%=1
  1937.     ansi$(1)=esc$+"[31m"
  1938.     ansi$(2)=esc$+"[32m"
  1939.     ansi$(3)=esc$+"[33m"
  1940.     ansi$(4)=esc$+"[34m"
  1941.     ansi$(5)=esc$+"[35m"
  1942.     ansi$(6)=esc$+"[36m"
  1943.     ansi$(7)=esc$+"[37m"
  1944.     ansi$(8)=esc$+"[1m"
  1945.     ansi$(9)=esc$+"[3m"
  1946.     ansi$(10)=esc$+"[4m"
  1947.   ELSE
  1948.     ansi%=0
  1949.     FOR kk%=1 TO 10
  1950.       ansi$(kk%)=""
  1951.     NEXT kk%
  1952.   ENDIF
  1953.   setansi9:
  1954.   ' regardless of setting, this is needed for safety!
  1955.   ansi$(0)=esc$+"[0;37;40m"
  1956.   o$=ansi$(0)
  1957.   GOSUB 2
  1958. RETURN
  1959. '
  1960. '
  1961. '   **************
  1962. PROCEDURE dateconv
  1963.   ' **************
  1964.   ' converts date to Fido style DD-Mmm-YY
  1965.   ' string to use is pd.date$
  1966.   pd.temp$=DATE$
  1967.   pd.date1$=LEFT$(pd.temp$,2)
  1968.   pd.date2$=MID$(pd.temp$,4,2)
  1969.   pd.date3$=RIGHT$(pd.temp$,2)
  1970.   pd.month%=VAL(pd.date1$)
  1971.   pd.month$="Xxx"
  1972.   IF pd.month%=1 THEN
  1973.     pd.month$="Jan"
  1974.   ELSE IF pd.month%=2
  1975.     pd.month$="Feb"
  1976.   ELSE IF pd.month%=3
  1977.     pd.month$="Mar"
  1978.   ELSE IF pd.month%=4
  1979.     pd.month$="Apr"
  1980.   ELSE IF pd.month%=5
  1981.     pd.month$="May"
  1982.   ELSE IF pd.month%=6
  1983.     pd.month$="Jun"
  1984.   ELSE IF pd.month%=7
  1985.     pd.month$="Jul"
  1986.   ELSE IF pd.month%=8
  1987.     pd.month$="Aug"
  1988.   ELSE IF pd.month%=9
  1989.     pd.month$="Sep"
  1990.   ELSE IF pd.month%=10
  1991.     pd.month$="Oct"
  1992.   ELSE IF pd.month%=11
  1993.     pd.month$="Nov"
  1994.   ELSE IF pd.month%=12
  1995.     pd.month$="Dec"
  1996.   ENDIF
  1997.   pd.date$=pd.date2$+"-"+pd.month$+"-"+pd.date3$
  1998. RETURN
  1999. '
  2000.